写在前面
这个错误很蛋疼, 你会去检查feed数据的数据类型和palceholder的定义类型是否一致, 你会检查feed_dict的输入类型支不支持numpy.ndarray, 甚至于你还会去查unhashable的原因. 或者会试图把ndarray改写成list. 很有可能你会解决这个问题, 但是我的解决方式却非常的神奇, stackoverflow上有人剔骨类似的问题, 然后有人提示让你注意一下变量的名字, 然后我检查了一下我的代码, 发现定义的placeholder和输入变量的名字是一样的, 然后我尝试把两者使用不同的命名, 问题解决
错误提示
Traceback (most recent call last): File "demo.py", line 193, in <module> detector() File "demo.py", line 175, in detector preds = sess.run(decodes, feed_dict={bbox:roi.reshape(1, 4), feature_map_np: feature_map_np}) TypeError: unhashable type: 'numpy.ndarray'
这是由于变量名与占位符名冲突导致的
解决方法
# 部分代码 feature_map_np_p = tf.placeholder(tf.float32, shape=[1, None, None, 512], name='feature_map_np') bbox = tf.placeholder(tf.float32, shape=[1,4], name='rol') .... .... preds = sess.run(decodes, feed_dict={bbox:roi.reshape(1, 4), feature_map_np_p: feature_map_np}) # 注意placeholder那边也要修改